package JAVA2024_4_30;

public class SQL2024_4_30 {
    /**
     * 子查询 关联查询
     * 语法要求 需要用()括起来
     * 子查询 SubQuery
     *      嵌套在其他的SQL语句之中的 按需嵌套
     *      为包含它的SQL语句提供数据的 后续操作基于子查询提供的数据进行
     *
     *      分类
     *      单行单列 DQL DML
     *      多行单列 DML DQL
     *      多行多列 DQL DML
     *
     * DQL中的子查询
     * DDL中的子查询
     */
/*
    视图VIEW
        虚表 不是实际的真实的表 相当于记录了子查询的一套结果集/函数 表达式/可视范围
        通常用于约束非超级用户的数据查询权限 保护隐私数据
 */
    /**
     * 关联查询
     * 联合多张表一起查数据 挑选部分数据进行使用 意味着结果集来自多个表
     * (目前学习的数据库称为 关系数据库)
     * 关联关系(至少2张表)
     *      一对一 单向 A表中的1条记录只能对应B表中的1条记录
     *      一对多 单向 A表中的1条记录能对应B表中的多条记录 (最常见 有外键的一方一般为"多")
     *      多对多 双向 A表与B表双向都是一对多
     *
     * 连接条件
     *      用于关联两个表中数据的对应关系 N个表关联查询至少要有N-1个连接条件
     * 注意事项
     *      1 关联查询都要指定连接条件
     *      2 连接条件的数量有下限的规定 否则会产生笛卡尔积
     * 笛卡尔积: 不规定连接条件时 A表与B表的每一个数据都产生一次连接
     *         产生1*B表数据的积(设为M) A表若共有N条数据 则共产生N*M条记录
     *         容易造成巨大的内存承压 多数情况下笛卡尔积没有意义
     * 语法
     *
     * 过滤条件
     *
     * 关联查询中使用聚合函数
     */
    /*
        主外键关联
            两张表中记录存在关联关系时 那么就会在这两张表中分别定义主键与外键
        主键 一般为建表时的第一个字段 字段名一般为id 除了标记每条记录 没有其他作用
        外键 保存另一张表中主键字段的值
     */











}
